package com.example.market2023.controller;


import com.example.market2023.entity.User;
import com.example.market2023.service.UserService;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;


@Controller
public class UserController {
    //    写与前端交互的方法，如何把数据给到前端显示，或者如何从前端接受到数据，然后做出对应的操作
    @Autowired
    UserService userService;

    @Autowired
    HttpServletRequest request;


    //默认进入的首页就是登录页，
    @RequestMapping("/")
    public String login(Model model){
        return "login";
    }

    @RequestMapping("/main")
    public String main(Model model){
        Object username= request.getSession().getAttribute("username");
        if(username==null){
            return "redirect:/";
        }else {
            model.addAttribute("username", username);
            return "main";
        }
    }

    @RequestMapping("/register")
    public String register(){
        return "register";
    }
    //写一个处理用户注册的方法
    @RequestMapping("/registerProcess")
    public String registerProcess(@RequestParam String username,@RequestParam String userpwd){
//        查看有没有接收用户前端的输入
        if(username.isEmpty()){
            return "redirect:/register";
        }else{
//            1.组装一个用户实体对象
            User user = new User();
            user.setName(username);
            user.setPassword(userpwd);
            user.setRights("0");
            user.setStatus("0");
            System.out.println(user);
//            2.调用service的add方法
            if(userService.add(user)==1){
                return "redirect:/main";
            }else{
                return "redirect:/register";
            }
        }
    }

    //    登录页提交数据后哪个服务来处理登录
    @RequestMapping("/login")
    public String loginProcess(HttpServletRequest request, @RequestParam String username, @RequestParam String userpwd){
//        首先看有没有接受到数据
        System.out.println(username);
        System.out.println(userpwd);
//        如果传递过来的用户名和密码都正确，就直接进入系统管理的主页面main.html
        User user= new User();
        user.setName(username);
//        从数据库里查询返回的一个用户对象
        User userdb = userService.findOne(user);
        //        如果用户名和密码有错误，然后就去错误提示页面
        if(!userdb.getName().isEmpty()){
            if(userdb.getPassword().equals(userpwd)){
                HttpSession session = request.getSession();
                session.setAttribute("username",username);
                return "redirect:/main";
            }
            else{
                return "loginError";
            }
        }else{
            return "loginError";
        }
    }

    //    登录用户退出
    @RequestMapping("/logout")
    public String logout(){
//        1.直接清除session里的username对应的值
        request.getSession().removeAttribute("username");
//        2.返回到登录页面
        return "redirect:/";
    }
    @RequestMapping("/pages/welcome")
        public String getWelcomePage() {
            return "pages/welcome"; // 返回视图名，视图解析器将解析为具体的HTML页面
        }

    @RequestMapping("/pages/blank")
    public String getBlankPage() {
        return "pages/blank"; // 返回视图名，视图解析器将解析为具体的HTML页面
    }

    @RequestMapping("/pages/vip")
    public String getVipPage() {
        return "pages/vip"; // 返回视图名，视图解析器将解析为具体的HTML页面
    }
    @RequestMapping("pages/profile")
    public String getprofile(){
        return "pages/profile";
    }
    @RequestMapping("pages/password")
    public String getpassword(){
        return "pages/password";
    }
    @RequestMapping("pages/message")
    public String getmessage(){
        return "pages/message";
    }
    @RequestMapping({"/pages/keren"})

    public String getPliginPage() {
        return "pages/keren"; // 返回视图名，视图解析器将解析为具体的HTML页面
    }
}
